#pragma once
#include "FluidModel.h"
namespace Simulation {
	class TimeStepFluidModel
	{
	protected:
		unsigned int m_velocityUpdateMethod;

		void clearAccelerations(FluidModel& model);
		void computeXSPHViscosity(FluidModel& model);
		void computeDensities(FluidModel& model);
		void updateTimeStepSizeCFL(FluidModel& model, const double minTimeStepSize, const double maxTimeStepSize);
		void constraintProjection(FluidModel& model);

	public:
		TimeStepFluidModel();
		virtual ~TimeStepFluidModel(void);

		void step(FluidModel& model);
		void reset();

		unsigned int getVelocityUpdateMethod() const { return m_velocityUpdateMethod; }
		void setVelocityUpdateMethod(unsigned int val) { m_velocityUpdateMethod = val; }
	};
}


